package com.heer.imagepick;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;

import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;

import java.util.ArrayList;

/**
 * 分相册查看SD卡所有图片。 Created by hanj on 14-10-14.
 */
public class PhotoAlbumSingleActivity extends Activity {
    TitleBuilder titleBuilder;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.photo_album);
        EventBus.getDefault().register(this);

        if (!Utility.isSDcardOK()) {
            Utility.showToast(this, "SD卡不可用。");
            return;
        }

        Intent t = getIntent();
        if (!t.hasExtra("latest_count")) {
            return;
        }
        titleBuilder = new TitleBuilder(this);

        titleBuilder.setTitleText("选择相册").setLeftImage(R.drawable.ic_back).setLeftText("返回").setLeftOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                backAction();
            }
        }).setRightText("取消").setRightOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                backAction();
            }
        });

        ListView listView = (ListView) findViewById(R.id.select_img_listView);

        // //第一种方式：使用file
        // File rootFile = new File(Utility.getSDcardRoot());
        // //屏蔽/mnt/sdcard/DCIM/.thumbnails目录
        // String ignorePath = rootFile + File.separator + "DCIM" +
        // File.separator + ".thumbnails";
        // getImagePathsByFile(rootFile, ignorePath);

        // 第二种方式：使用ContentProvider。（效率更高）
        final ArrayList<PhotoAlbumItem> list = new ArrayList<PhotoAlbumItem>();
        // “最近照片”
        list.add(new PhotoAlbumItem("最近照片",
                t.getIntExtra("latest_count", -1), t
                .getStringExtra("latest_first_img")));
        // 相册
        list.addAll(Utility.getImagePathsByContentProvider(this));

        PhotoAlbumSingleAdapter adapter = new PhotoAlbumSingleAdapter(this, list);
        listView.setAdapter(adapter);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                Intent intent = new Intent(PhotoAlbumSingleActivity.this,
                        PhotoWallSingleActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

                // 第一行为“最近照片”
                if (position == 0) {
                    intent.putExtra("code", 200);
                } else {
                    intent.putExtra("code", 100);
                    intent.putExtra("folderPath", list.get(position)
                            .getPathName());
                }
                startActivity(intent);
            }
        });
    }

    /**
     * 点击返回时，回到相册页面
     */
    private void backAction() {
        EventBus.getDefault().post("album");
        finish();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        EventBus.getDefault().unregister(this);
    }

    @Subscribe
    public void finish(String str) {
        if (TextUtils.equals(str, "wall"))
            finish();
    }

    // 重写返回键
    @Override
    public boolean onKeyDown(int keyCode, @NonNull KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            backAction();
            return true;
        } else {
            return super.onKeyDown(keyCode, event);
        }
    }


    @SuppressLint("NewApi")
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);

        // 动画
        overridePendingTransition(R.anim.in_from_left, R.anim.out_from_right);
    }

    // /**
    // * 使用File读取SD卡所有图片。
    // */
    // private void getImagePathsByFile(File file, String ignorePath) {
    // if (file.isFile()) {
    // File parentFile = file.getParentFile();
    // String parentFilePath = parentFile.getAbsolutePath();
    //
    // if (cachePath.contains(parentFilePath)) {
    // return;
    // }
    //
    // if (isImage(file.getName())) {
    // list.add(new SelectImgGVItem(parentFilePath, getImageCount(parentFile),
    // getFirstImagePath(parentFile)));
    // cachePath.add(parentFilePath);
    // }
    // } else {
    // String absolutePath = file.getAbsolutePath();
    // //屏蔽文件夹
    // if (absolutePath.equals(ignorePath)) {
    // return;
    // }
    //
    // //不读取缩略图
    // if (absolutePath.contains("thumb")) {
    // return;
    // }
    //
    // //不读取层级超过5的
    // if (Utility.countMatches(absolutePath, File.separator) > 5) {
    // return;
    // }
    //
    // //不读取路径包含.的和隐藏文件
    // if (file.getName().contains(".")) {
    // return;
    // }
    //
    // File[] childFiles = file.listFiles();
    // if (childFiles != null) {
    // for (File childFile : childFiles) {
    // getImagePathsByFile(childFile, ignorePath);
    // }
    // }
    // }
    // }
}
